前文:【python socket编程】—— 4.实现redirect函数


cookie的实现很简单,在服务器返回的响应中,header里增加Set-Cookie,浏览器接受到Set-Cookie中的value,下次访问这个网站的请求中就会带上这个cookie。编写一个增加cookie的函数:

def add_cookie(cookie=''):
    header = 'HTTP/1.1 200 OK \r\nContent-Type: text/html\r\n'
    header += 'Set-Cookie: {}\r\n'.format(cookie)
    return header

假设用户登录验证成功之后,我们用add_cookie将其用户名username存入到cookie中返回给浏览器,例如承接前文,用户登录成功后给其返回一个302跳转的响应,我们在其中再加入cookie,此时response如下:

HTTP/1.1 302 JUMP 
Content-Type: text/html
Set-Cookie: Harp
Location: /

那么浏览器下次请求,requestheader里就会带上Cookie: Harp这一行了。此时服务端解析request,根据cookie就知道当前用户是登陆状态的。


显然,直接在cookie里写用户的username是不安全的。我们可以把username存在session里,假设session是一个字典,用户登录验证成功后,随机生成一个长的字符串session_id作为keyusername作为value存入session中,然后把session_id作为cookie返回给浏览器,浏览器下次请求时候带上的cookie内容为这个session_id,我们去session里取对应的value即可。


下一篇文章:【python socket编程】—— 6.简单实现render_template和密码hash


Harpsichord1207
538 声望44 粉丝

前路漫漫